// 导入处理路径的 path 核心模块
const path = require('path')
const { abort } = require('process')
// 导入数据库操作模块
const db = require('../db/index')

// 保存草稿的处理函数
exports.savedraft = (req, res) => {
    const articleInfo = req.body
    if (!articleInfo.title || !articleInfo.sort) {
        // return res.send({ status: 1, message: '用户名或密码不能为空！' })
        return res.cc('标题或分类不能为空')
    }
    if (!articleInfo.context) {
        return res.cc('内容不能为空')
    }
    if (!articleInfo.cover_img) {
        return res.cc('你的封面呢？')
    }
    if (!articleInfo.summary) {
        return res.cc('简介内容不能为空')
    }
    // 定义SQL语句 查询标题是否已经被保存
    const SQL = 'select * from ev_article where title=?'
    db.query(SQL, articleInfo.title, (err, results) => {
        // 如果SQL语句执行错误
        if (err) return res.cc(err)
        // 如果title已经存在
        if (results.length > 0) {
            const SQL1 = 'update ev_article set sort=?,context=?,cover_img=?,summary=? where title=?'
            db.query(SQL1, [articleInfo.sort, articleInfo.context, articleInfo.cover_img, articleInfo.title, articleInfo.summary], (err, results) => {
                // 执行SQL语句出错
                if (err) return res.cc(err)
                // SQL 语句执行成功，但是影响行数不等于 1
                if (results.affectedRows !== 1) return res.cc('更新失败！')
                // res.cc('更新成功！', 0)
                res.send({
                    msg: '保存成功',
                    status: 0,
                    articleInfo
                })
            })
        }
        // 不存在
        if (results.length === 0) {
            const SQL2 = 'insert into ev_article set ?'
            db.query(SQL2, {
                title: articleInfo.title, sort: articleInfo.sort,
                context: articleInfo.context, cover_img: articleInfo.cover_img,
                summary: articleInfo.summary
            }, (err, results) => {
                if (err) return res.cc(err)
                if (results.affectedRows !== 1) return res.cc('保存失败')
                res.send({
                    msg: '保存成功',
                    status: 0,
                    articleInfo
                })
            })
        }
    })
}
// get草稿 展示在页面上
exports.getDraft = (req, res) => {
    const sql = 'select * from ev_article'
    db.query(sql, (err, result) => {
        // 执行SQL语句失败
        if (err) return res.cc(err)
        // 查询失败
        if (result.length == 0) {
            // 返回一个空数组
            return res.send([])
        }
        res.send(result)
    })
}
// 删除所有草稿的处理函数
exports.deletealldraft = (req, res) => {
    const sql = 'delete from ev_article'
    db.query(sql, (err, result) => {
        // 执行sql语句出错
        if (err) return res.cc(err)
        // SQL 语句执行成功，但是影响行数不等于 1
        if (result.affectedRows !== 1) return res.send('删除失败/草稿已清空')
        return res.send('删除成功')
    })
}
// 发布新文章的处理函数
exports.addArticle = (req, res) => {
    const articleInfo = req.body
    if (!articleInfo.title || !articleInfo.sort) {
        // return res.send({ status: 1, message: '用户名或密码不能为空！' })
        return res.cc('标题或分类不能为空')
    }
    if (!articleInfo.context) {
        return res.cc('内容不能为空')
    }
    if (!articleInfo.cover_img) {
        return res.cc('你的封面呢？')
    }
    if (!articleInfo.summary) {
        return res.cc('简介不能为空')
    }
    // 定义SQL语句 查询标题是否被占用
    const SQL = 'select * from ev_articles where title=?'
    db.query(SQL, articleInfo.title, (err, results) => {
        // 执行SQL语句出错  
        if (err) return res.cc(err)
        // 文章标题被占用
        if (results.length > 0) {
            return res.cc('标题已被占用，请更换！')
        }
        // 定义SQL语句 添加文章
        const SQL1 = 'insert into ev_articles set ?'
        db.query(SQL1, {
            title: articleInfo.title, sort: articleInfo.sort,
            context: articleInfo.context, cover_img: articleInfo.cover_img,
            summary: articleInfo.summary, time: articleInfo.time, nowtime: articleInfo.nowtime, last: articleInfo.time
        },
            (err, results) => {
                // SQL语句执行错误
                if (err) return res.cc(err)
                //SQL语句执行成功，但影响行数不为1
                if (results.affectedRows !== 1) {
                    return res.cc('文章添加失败，请骚后再试')
                }
                // 文章添加成功
                res.cc('添加成功', 0)
            })
    })
}
// 修改文章的处理函数
exports.updateArticle = (req, res) => {
    req.body
    const sql = 'update ev_articles set ? where id=? '
    db.query(sql, [req.body, req.body.id], (err, result) => {
        // 执行SQL语句出错
        if (err) return res.cc(err)
        // 影响行数不等于1
        if (result.affectedRows !== 1) return res.cc('修改失败')
        return res.send({
            msg: '修改成功',
            status: 0
        })
    })
}
// 删除文章的处理函数
exports.deleteArticle = (req, res) => {
    const info = req.body
    const sql = 'delete from ev_articles where id=?'
    db.query(sql, info.id, (err, result) => {
        // 执行SQL语句错误
        if (err) return res.cc(err)
        // SQL 语句执行成功，但是影响行数不等于 1
        if (result.affectedRows !== 1) return res.cc('删除失败')
        res.cc('删除成功', 0)
    })
}
// 遍历文章table的处理函数
exports.allArticle = (req, res) => {
    const SQL = 'select * from ev_articles'
    db.query(SQL, (err, result) => {
        // 执行SQL语句失败
        if (err) return res.cc(err)
        // results个数为0
        if (result.length === 0) {
            // 博客数为零0时返回一个空数组
            return res.send([])
        }
        res.send({
            msg: '查询成功',
            status: 0,
            data: result
        })
    })
}
// 查看文章的处理函数
exports.showArticle = (req, res) => {
    const info = req.body
    const sql = 'SELECT * FROM ev_articles where id = ?'
    db.query(sql, info.id, (err, result) => {
        if (err) return res.cc(err)
        if (result.length === 0) {
            return res.cc('查询失败')
        }
        res.send(result)
    })
}
// 分类搜索的处理函数
exports.sortArticle = (req, res) => {
    const info = req.body
    const sql = 'select * from ev_articles where sort=?'
    db.query(sql, info.sort, (err, results) => {
        // 执行SQL语句错误
        if (err) return res.cc(err)
        // results.length === 0
        if (results.length == 0) {
            // 查询失败/该分类不存在
            return res.send([])
        }
        return res.send({
            msg: '请求成功',
            status: 0,
            data: results
        })
    })
}
// 关键字搜索的处理函数
exports.searchArticle = (req, res) => {
    const info = req.body
    const sql = `select * from ev_articles where title like "%${info.keyWord}%"`
    db.query(sql, (err, results) => {
        // 执行SQL语句错误
        if (err) return res.cc(err)
        // results.length === 0
        if (results.length == 0) {
            // 查询失败/该分类不存在
            return res.send('查询失败,请搜索其他关键词')
        }
        return res.send({
            msg: '请求成功',
            status: 0,
            data: results
        })
    })
}





